[日本語Alexa] Cognito User Pool によるアカウントリンク
1 はじめに
Amazon Alexa(以下、Alexa)のスキルには、アカウントリンクという機能があり、認可を得て他のサービスの機能を利用する仕組みがあります。
アカウントリンクについては、過去にも幾つか記事を投稿させていただきました。
[日本語Alexa] 本日から利用可能になった新しいコンソールでアカウントリンクを設定してみました
[日本語Alexa] APIGatewayをプロキシーとして設定し、アカウントリンクをデバッグする
[Alexa] Login with Amazon との Account Linking で名前を呼びかける挨拶とかメールを送信するスキルを作ってみました
[Alexa] Account Linking を使用してスキルからFacebookに投稿してみました
[Alexa] LINEログインでAccount Linkingしてみた
[Alexa] Microsoft Graph にアカウントリンクしてみました 〜AlexaでOffice 365を操作するために〜
Alexa for Business プライベートスキルでアカウントリンクをやってみました #reinvent #Alexa
今回は、Amazon Cognito(以下、Cognito)のユーザープールを使用したアカウントリンクを紹介させて頂きます。
作業の手順は、概ね以下のとおりです。
- ユーザープールの作成・設定 (Cognito)
- ユーザープールの作成
- アプリクライアントの作成
- ドメインの作成
- アプリクライアントの設定
- アカウントリンクの設定 (スキル)
2 ユーザープールの作成・設定
作業は、AWSコンソールを開いてCoginitoのユーザープールの管理から行います。
(1) ユーザープールの作成
プール名を指定して、プールの作成を行います。今回は、デフォルトの設定をそのまま使用しました。
(2) アプリクライアントの作成
続いて、アクセスを許可するアプリクライアント作成します。
作成が終わると、アプリクライントID と アプリクライアントのシークレット が作成されます。この2つは、スキルのアカウントリンクの設定で使用するのでコピーしておきます。
(3) ドメインの作成
Cognitoのアプリクライントでは、ユーザープールごとに認証及びトークンのエンドポイントが専用に用意されます。このため、ユーザープールにドメインを設定する必要があります。
メニューから ドメイン名 を選択して、ドメイン名を指定します。
(4) アプリクライアントの設定
最後に、アプリクライントの設定で下記の設定を行います。
- 有効なIDプロパイダ Cognito User Pool
- コールバックURL スキルのアカウントリンクの設定ページで表示されるもの
- サインアウトURL とりあえず、https://alexa.amazon.co.jpを指定しました
- 許可されているOAuthフロー Authorization code grant (スキルの設定と整合させます)
- 許可されているOAuthスコープ aws.cognito.signin.user.admin のみとしました
3 アカウントリンクの設定
スキルのアカウントリンクの設定を有効にし、下記の項目を設定します。
- Authorization Grant種別 Auth Code Grant (アプリの設定と整合させます)
- 認証画面のURL https://ユーザープールドメイン名/oauth2/authorize
- アクセストークンURL https://ユーザープールドメイン名/oauth2/token
- クライアントID アプリの アプリクライントID (先にコピーしたもの)
- クライアントシークレットID アプリのシークレット (先にコピーしたもの)
- クライアントの認可方式 HTTP Basic認証(推奨)
- スコープ aws.cognito.signin.user.admin (アプリで許可されたもの)
4 ユーザーの作成
アカウントリンクの動作確認のためにユーザーを作成します。
ユーザとグループ から ユーザーの作成 を行います。
5 動作確認
それでは、動作を確認してみます。Alexaアプリから作成したスキルを選択し、「有効にする」をクリックします。
Cognitoに認証画面が表示されますので、作成したユーザーの名前とパスワードを入力します。
「正常にリンクされました」が表示されたら成功です。
6 最後に
今回は、Cognitoのユーザープールを使用したアカウントリンクを試してみました。
Cognitoのユーザープールを使用すると、ユーザーデータを自由に作成することが出来ます。ユーザーを識別し、その情報を利用するようなスキルを作成する場合は、選択の一つになると思います。
7 参考リンク
Alexaユーザーとシステムユーザーを関連付ける
Amazon Cognito の Auth API リファレンス
[日本語Alexa] 本日から利用可能になった新しいコンソールでアカウントリンクを設定してみました
[日本語Alexa] APIGatewayをプロキシーとして設定し、アカウントリンクをデバッグする
[Alexa] Login with Amazon との Account Linking で名前を呼びかける挨拶とかメールを送信するスキルを作ってみました
[Alexa] Account Linking を使用してスキルからFacebookに投稿してみました
[Alexa] LINEログインでAccount Linkingしてみた
[Alexa] Microsoft Graph にアカウントリンクしてみました 〜AlexaでOffice 365を操作するために〜
Alexa for Business プライベートスキルでアカウントリンクをやってみました #reinvent #Alexa